package com.blog.admin.feign;

import cn.hutool.core.util.IdUtil;
import com.blog.common.core.enums.PathEnum;
import com.blog.system.api.domain.SysFile;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * <p>
 * 上传文件
 * </p>
 *
 * @author Valerie
 * @date 2023/3/13
 **/
public interface UploadFileService {

    /**
     * 上传文件
     *
     * @param pathEnum 文件路径
     * @param file 文件
     * @return {@link String}
     */
    default SysFile uploadFile(PathEnum pathEnum, MultipartFile file) throws IOException {
        // 文件名
        long fileName = IdUtil.getSnowflake().nextId();
        // 文件路径
        String filePath = pathEnum.getPath();
        // 扩展名
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        return uploadFile(filePath, Long.toString(fileName) + "." + extension, file);
    }

    /**
     * 上传文件
     *
     * @param filePath 路径
     * @param fileName 文件名
     * @param file 文件
     * @return {@link String}
     */
    public SysFile uploadFile(String filePath, String fileName, MultipartFile file) throws IOException;

    /**
     * 判断文件是否存在
     *
     * @param filePath 文件路径
     * @return {@link Boolean}
     */
    public Boolean exits(String filePath);


    /***
     * 获取文件全路径
     *
     * @param filePath 文件路径
     * @return {@link String}
     */
    public String getFilePath(String filePath);
}
